/**
 * Copyright ©2003~2019年2月13日 szkingdom
 * @author raohj
 * @date 2019年2月13日
 * @file RMyBatis.java
 * @comment : please input your comment to this file
 * @version : input version
 * @modify:
 * 		1、 2019年2月13日 由 raohj 新建文件
 */
package com.ccnu.database;

import com.ccnu.database.dao.impl.TTestMapper;
import com.ccnu.database.dao.pojo.TTest;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;

/**
 * @author raohj
 * @date 2019年2月13日
 * @version
 * @comment to add your comment
 */
public class RMyBatis {
	private final static SqlSessionFactory sqlSessFac;

	// 避免多次获取sqlsessionfactory，放在静态代码中获取
	static {
		// 读取配置文件，并且构建一个SqlSessionFactory
		String resource = "mybatis-config.xml";
		Reader reader = null;
		try {
			reader = Resources.getResourceAsReader(resource);
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
		
		sqlSessFac = new SqlSessionFactoryBuilder().build(reader);
	}

	public static void test() {
		testCommit();
	}

	/**
	 * @author raohj
	 * @date 2019年8月26日
	 * @comment 测试提交动作
	 * @param
	 * @return
	 */
	public static void testCommit() {
		// 从 SqlSessionFactory 中获取 SqlSession
		SqlSession sqlSess = sqlSessFac.openSession();
		
		// 获取po的实现对象
		TTestMapper t_Test = sqlSess.getMapper(TTestMapper.class);
		
		TTest testPo = new TTest();
		testPo.setCustNo("2019080500000001");
		testPo.setCustName("rhj");
		testPo.setCustBirthday("19880828");
		// 执行SQL语句，如果没有建立连接，则建立连接
		t_Test.insert(testPo);
		// 执行提交
		sqlSess.commit();
		// 关闭连接
		sqlSess.close();
	}

	/**
	 * @author raohj
	 * @date 2019年8月26日
	 * @comment 测试回滚动作
	 * @param
	 * @return
	 */
	public static void testRollback() {
		SqlSession sqlSess = sqlSessFac.openSession();
		TTestMapper t_Test = sqlSess.getMapper(TTestMapper.class);
		TTest testPo = new TTest();
		testPo.setCustNo("2019080500000002");
		testPo.setCustName("rhj");
		testPo.setCustBirthday("19880828");
		t_Test.insert(testPo);
		
		// 执行回滚操作
		sqlSess.rollback();
		sqlSess.close();
	}

	/**
	 * @author raohj
	 * @date 2019年8月26日
	 * @comment 测试基础SQL操作
	 * @param
	 * @return
	 */
	public static void testBasicSQL() {

	}
}
